#include <stdio.h>

int findMaxSubarraySum(int nums[], int size) {
    int maxSoFar = nums[0];
    int maxEndingHere = nums[0];

    for (int i = 1; i < size; i++) {
        if (maxEndingHere + nums[i] > nums[i]) {
            maxEndingHere = maxEndingHere + nums[i];
        }
        else {
            maxEndingHere = nums[i];
        }

        if (maxEndingHere > maxSoFar) {
            maxSoFar = maxEndingHere;
        }
    }

    return maxSoFar;
}

int main() {
    int test[] = { 1, -2, 3, -2, 5, 1 };
    int size = sizeof(test) / sizeof(test[0]);
    printf("%d\n", findMaxSubarraySum(test, size));
    return 0;
}